﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using CC;

namespace RFMS
{
    public partial class LoyaliteitScherm : Form
    {
        public LoyaliteitScherm(int totaal, List<List<string>> lijst, string _tafelnaam, string _gebruikersnaam, int orderId)
        {
            InitializeComponent();
            this.totaal = totaal;
            this.lijst = lijst;
            this._tafelnaam = _tafelnaam;
            this._gebruikersnaam = _gebruikersnaam;
            this.orderId = orderId;
        }

        private int _bedrag;
        private LoyaliteitBeheer _loyaliteitBeheer;
        private int totaal;
        private List<List<string>> lijst;
        private string _tafelnaam;
        private string _gebruikersnaam;
        private int orderId;
        private BonPrinten _bonPrinten;
        private OrderBeheer _orderBeheer;

        private void LoyaliteitScherm_Load(object sender, EventArgs e)
        {
            _loyaliteitBeheer = new LoyaliteitBeheer();
            t_BijschrijvenTegoed.Text = Convert.ToString(_bedrag / 10);
            _orderBeheer = new OrderBeheer();
            _bonPrinten = new BonPrinten();
            dataGridView1.Rows.Clear();
            var loyaliteitLijst = _loyaliteitBeheer.TegoedOphalen();
            foreach (var lijst in loyaliteitLijst)
            {
                object[] row = new object[] { lijst[0], lijst[1], lijst[2]};
                dataGridView1.Rows.Add(row);
            }
        }

        private void b_loyaliteitAanmaken_Click(object sender, EventArgs e)
        {
            try
            {
                _loyaliteitBeheer.KlantToevoegen(t_LoyaliteitKlant.Text, t_LoyaliteitPostcode.Text);
            }
            catch (Exception)
            {
                MessageBox.Show(@"Klant niet kunnen toevoegen");
            }
            
            dataGridView1.Rows.Clear();
            var loyaliteitLijst = _loyaliteitBeheer.TegoedOphalen();
            foreach (var lijst in loyaliteitLijst)
            {
                object[] row = new object[] { lijst[0], lijst[1], lijst[2] };
                dataGridView1.Rows.Add(row);
            }
        }

        private void b_TegoedBijschrijven_Click(object sender, EventArgs e)
        {
            try
            {
                _loyaliteitBeheer.TegoedWijzigen(dataGridView1.SelectedRows[0].Cells[0].Value.ToString(), dataGridView1.SelectedRows[0].Cells[1].Value.ToString(), Convert.ToDouble(t_BijschrijvenTegoed.Text));
            }
            catch (Exception)
            {
                MessageBox.Show(@"Tegoed kan niet worden bijgeschreven");
            }

            dataGridView1.Rows.Clear();
            var loyaliteitLijst = _loyaliteitBeheer.TegoedOphalen();
            foreach (var lijst in loyaliteitLijst)
            {
                object[] row = new object[] { lijst[0], lijst[1], lijst[2] };
                dataGridView1.Rows.Add(row);
            }
        }

        private void dataGridView1_SelectionChanged(object sender, EventArgs e)
        {
            try
            {
                
                t_BijschrijvenKlant.Text = dataGridView1.SelectedRows[0].Cells[0].Value.ToString();
                t_BijschrijvenPostcode.Text = dataGridView1.SelectedRows[0].Cells[1].Value.ToString();
                t_AfschrijvenKlant.Text = dataGridView1.SelectedRows[0].Cells[0].Value.ToString();
                t_AfschrijvenPostcode.Text = dataGridView1.SelectedRows[0].Cells[1].Value.ToString();
                if (dataGridView1.SelectedRows[0].Cells[2].Value == null)
                {
                    num_afschrijvenTeGoed.Value = Convert.ToDecimal(0.00);
                }
                else
                {
                    num_afschrijvenTeGoed.Value = Convert.ToDecimal(dataGridView1.SelectedRows[0].Cells[2].Value.ToString());
                }
                num_afschrijvenTeGoed.Maximum = Convert.ToDecimal(_loyaliteitBeheer.TegoedOphalen(t_AfschrijvenKlant.Text, t_AfschrijvenPostcode.Text)[0][2]);
            }
            catch (Exception)
            {
                return;
            }
        }

        private void b_TegoedAfschrijven_Click(object sender, EventArgs e)
        {
            var loyaliteitLijst = _loyaliteitBeheer.TegoedOphalen(t_AfschrijvenKlant.Text, t_AfschrijvenPostcode.Text);

            //Tegoed Bijwerken
            double nieuwTegoed = Convert.ToDouble(loyaliteitLijst[0][2].ToString()) - Convert.ToDouble(num_afschrijvenTeGoed.Value);
            _loyaliteitBeheer.TegoedWijzigen(t_AfschrijvenKlant.Text, t_AfschrijvenPostcode.Text,nieuwTegoed);

            //
            bool goed = _bonPrinten.BonVoorKlant(_tafelnaam, Convert.ToDouble(num_afschrijvenTeGoed.Value));

            if (!goed)
            {
                MessageBox.Show(@"Er is geen order om te printen!");
            }

            else
            {
                MessageBox.Show(@"Naar printer verzonden.");
            }

            CheckIfOrder();
        }

        private void CheckIfOrder()
        {
            if (_orderBeheer.OnafgehandeldeOrder(_tafelnaam) == 0)
            {
                b_TegoedAfschrijven.Enabled = false;
            }

            else
            {
                b_TegoedAfschrijven.Enabled = true;
            }
        }
    }
}
